// 1. 使用const关键声明变量且具有块级作用域
if (true) {
  const a = 10;

  if (true) {
    const a = 20;
    console.log("我是在if作用域内的输出 2层", a); // 20
  }

  console.log("我是在if作用域内的输出 1层", a); // 10`
}
// console.log("我是在if作用域外的输出", a); // ReferenceError: a is not defined


// 2. 常量赋值后，值不能修改
const PI = 3.14;
// PI = 100; // TypeError: Assignment to constant variable.

const ary = [100, 200];
// 可修改，因为修改的不是数组本身而是内部的基本数据类型，数组本身的内存地址指向并没有被改变
ary[0] = 'a';
ary[1] = 'b';
console.log("修改数组对应下标值数组输出", ary);

const ary2 = [100, 200];
// 不可修改，因为此操作直接赋值了数组，相当于直接修改数组的内存地址指向
// ary2 = ['a', 'b']; 
// console.log("直接修改数组 数组输出", ary2); // TypeError: Assignment to constant variable.
